Skip to content

Conversation

@andykelk
Copy link

@andykelk andykelk commented Aug 3, 2025

Adds configurable skip controls for audiobooks and podcasts with user-selectable skip amounts of 10, 15, 30, or 60 seconds.

Features

  • Forward and backward skip buttons appear only when playing audiobooks or podcasts
  • Users can choose skip duration (10/15/30/60 seconds) in Settings > Audiobooks & Podcasts
  • Rapid clicking accumulates skip time instead of jumping to the same position
  • Works across mini player, fullscreen player, and browser media session controls
  • Automatically detects audiobooks, podcasts, and podcast episodes

Implementation Details

  • Skip buttons positioned between previous/next and play controls
  • Generic fast-forward/rewind icons
  • Shared SkipControlManager handles throttling logic similar to existing media session controls
  • Browser media session uses configured amounts for keyboard/headphone controls
  • Falls back to 10 seconds for music content to maintain existing behaviour

Test Plan

  • Skip buttons appear only for audiobooks and podcasts
  • Setting configurable in frontend settings under new "Audiobooks & Podcasts" category
  • Skip amount changes are applied immediately without page refresh
  • Rapid clicking accumulates skip time correctly
  • Browser media session (keyboard/headphone controls) uses configured amounts
  • No skip buttons shown for regular music content

Fixes https://github.com/orgs/music-assistant/discussions/3745

- Add audiobook_skip_seconds setting with 10/15/30/60 second options
- Add new audiobooks_podcasts category to organize related settings
- Include translations for the new setting and category
- Add SkipControlManager to handle rapid click throttling
- Create SkipForwardBtn and SkipBackBtn components
- Include visual skip amount overlay on generic icons
- Implement proper null checking for playerQueue safety
- Add skip buttons to both mini and fullscreen player controls
- Implement media type detection for audiobooks, podcasts, and podcast episodes
- Use configurable skip amount from user settings
- Position skip buttons between previous/next and play controls
- Detect audiobooks and podcasts in media session handler
- Use user-configured skip amounts for audiobook/podcast media
- Fallback to 10 seconds for music content
- Apply consistent media type detection across all controls
@marcelveldt
Copy link
Member

Actually, server-side we also support skipping (for all media items, so also for tracks) - we simply never added it to the frontend. So if you prefer to use that, this would be the syntax:

command: "player_queues/skip"
parameters: {
  queue_id: string,
  seconds: number
}

seconds: number of seconds to skip in track. Use negative value to skip back.

@tsipinakis
Copy link

FYI I've patched the build errors: https://github.com/tsipinakis/mass-frontend/tree/nikos if you want to pull them

@OzGav
Copy link
Contributor

OzGav commented Aug 28, 2025

@andykelk If you can fix the lint errors this can be progressed

- Add missing MediaType import in PlayerBrowserMediaControls
- Format audiobook_skip_seconds options as title/value objects
- Ensure TypeScript compatibility across all components
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants